From bb9c51809d4f6904407c8b6003509a75ddc2d403 Mon Sep 17 00:00:00 2001 From: "djm@kirby.fc.hp.com" Date: Wed, 27 Jul 2005 12:57:05 -0700 Subject: [PATCH] Syntactic changes to prepare for possible vcpu_info changes --- xen/arch/ia64/hypercall.c | 4 ++-- xen/arch/ia64/process.c | 2 +- xen/arch/ia64/regionreg.c | 34 ++++++++++++++++++---------------- xen/arch/ia64/vcpu.c | 2 +- xen/arch/ia64/xentime.c | 7 ++++--- xen/include/asm-ia64/event.h | 4 +++- xen/include/asm-ia64/vcpu.h | 8 ++------ 7 files changed, 31 insertions(+), 30 deletions(-) diff --git a/xen/arch/ia64/hypercall.c b/xen/arch/ia64/hypercall.c index aecd0be174..8abaa48058 100644 --- a/xen/arch/ia64/hypercall.c +++ b/xen/arch/ia64/hypercall.c @@ -41,13 +41,13 @@ ia64_hypercall (struct pt_regs *regs) // to a yet-to-be-found bug where pending_interruption // is zero when it shouldn't be. Since PAL is called // in the idle loop, this should resolve it - v->vcpu_info->arch.pending_interruption = 1; + VCPU(v,pending_interruption) = 1; #endif if (regs->r28 == PAL_HALT_LIGHT) { #define SPURIOUS_VECTOR 15 pi = vcpu_check_pending_interrupts(v); if (pi != SPURIOUS_VECTOR) { - if (!v->vcpu_info->arch.pending_interruption) + if (!VCPU(v,pending_interruption)) idle_when_pending++; vcpu_pend_unspecified_interrupt(v); //printf("idle w/int#%d pending!\n",pi); diff --git a/xen/arch/ia64/process.c b/xen/arch/ia64/process.c index f8aafe1b40..8ccfb04235 100644 --- a/xen/arch/ia64/process.c +++ b/xen/arch/ia64/process.c @@ -50,7 +50,7 @@ extern unsigned long dom0_start, dom0_size; IA64_PSR_ID | IA64_PSR_DA | IA64_PSR_DD | \ IA64_PSR_SS | IA64_PSR_RI | IA64_PSR_ED | IA64_PSR_IA) -#define PSCB(x,y) x->vcpu_info->arch.y +#define PSCB(x,y) VCPU(x,y) #define PSCBX(x,y) x->arch.y extern unsigned long vcpu_verbose; diff --git a/xen/arch/ia64/regionreg.c b/xen/arch/ia64/regionreg.c index 10b26d9cba..04206edf4d 100644 --- a/xen/arch/ia64/regionreg.c +++ b/xen/arch/ia64/regionreg.c @@ -14,6 +14,7 @@ #include #include #include +#include #define IA64_MIN_IMPL_RID_BITS (IA64_MIN_IMPL_RID_MSB+1) @@ -332,14 +333,14 @@ void init_all_rr(struct vcpu *v) rrv.ps = PAGE_SHIFT; rrv.ve = 1; if (!v->vcpu_info) { printf("Stopping in init_all_rr\n"); dummy(); } - v->vcpu_info->arch.rrs[0] = -1; - v->vcpu_info->arch.rrs[1] = rrv.rrval; - v->vcpu_info->arch.rrs[2] = rrv.rrval; - v->vcpu_info->arch.rrs[3] = rrv.rrval; - v->vcpu_info->arch.rrs[4] = rrv.rrval; - v->vcpu_info->arch.rrs[5] = rrv.rrval; + VCPU(v,rrs[0]) = -1; + VCPU(v,rrs[1]) = rrv.rrval; + VCPU(v,rrs[2]) = rrv.rrval; + VCPU(v,rrs[3]) = rrv.rrval; + VCPU(v,rrs[4]) = rrv.rrval; + VCPU(v,rrs[5]) = rrv.rrval; rrv.ve = 0; - v->vcpu_info->arch.rrs[6] = rrv.rrval; + VCPU(v,rrs[6]) = rrv.rrval; // v->shared_info->arch.rrs[7] = rrv.rrval; } @@ -378,7 +379,7 @@ unsigned long load_region_regs(struct vcpu *v) // TODO: These probably should be validated unsigned long bad = 0; - if (v->vcpu_info->arch.metaphysical_mode) { + if (VCPU(v,metaphysical_mode)) { ia64_rr rrv; rrv.rrval = 0; @@ -390,16 +391,16 @@ unsigned long load_region_regs(struct vcpu *v) ia64_srlz_d(); } else { - rr0 = v->vcpu_info->arch.rrs[0]; + rr0 = VCPU(v,rrs[0]); if (!set_one_rr(0x0000000000000000L, rr0)) bad |= 1; } - rr1 = v->vcpu_info->arch.rrs[1]; - rr2 = v->vcpu_info->arch.rrs[2]; - rr3 = v->vcpu_info->arch.rrs[3]; - rr4 = v->vcpu_info->arch.rrs[4]; - rr5 = v->vcpu_info->arch.rrs[5]; - rr6 = v->vcpu_info->arch.rrs[6]; - rr7 = v->vcpu_info->arch.rrs[7]; + rr1 = VCPU(v,rrs[1]); + rr2 = VCPU(v,rrs[2]); + rr3 = VCPU(v,rrs[3]); + rr4 = VCPU(v,rrs[4]); + rr5 = VCPU(v,rrs[5]); + rr6 = VCPU(v,rrs[6]); + rr7 = VCPU(v,rrs[7]); if (!set_one_rr(0x2000000000000000L, rr1)) bad |= 2; if (!set_one_rr(0x4000000000000000L, rr2)) bad |= 4; if (!set_one_rr(0x6000000000000000L, rr3)) bad |= 8; @@ -410,4 +411,5 @@ unsigned long load_region_regs(struct vcpu *v) if (bad) { panic_domain(0,"load_region_regs: can't set! bad=%lx\n",bad); } + return 0; } diff --git a/xen/arch/ia64/vcpu.c b/xen/arch/ia64/vcpu.c index f2c0d7b8de..b3dbdee8ae 100644 --- a/xen/arch/ia64/vcpu.c +++ b/xen/arch/ia64/vcpu.c @@ -28,7 +28,7 @@ typedef union { // this def for vcpu_regs won't work if kernel stack is present #define vcpu_regs(vcpu) ((struct pt_regs *) vcpu->arch.regs) -#define PSCB(x,y) x->vcpu_info->arch.y +#define PSCB(x,y) VCPU(x,y) #define PSCBX(x,y) x->arch.y #define TRUE 1 diff --git a/xen/arch/ia64/xentime.c b/xen/arch/ia64/xentime.c index 8031bedf34..3cca06182a 100644 --- a/xen/arch/ia64/xentime.c +++ b/xen/arch/ia64/xentime.c @@ -27,6 +27,7 @@ #include #include #ifdef XEN +#include #include // not included by xen/sched.h #endif #include @@ -143,8 +144,8 @@ xen_timer_interrupt (int irq, void *dev_id, struct pt_regs *regs) if (!(++count & ((HEARTBEAT_FREQ*1024)-1))) { printf("Heartbeat... iip=%p,psr.i=%d,pend=%d\n", regs->cr_iip, - current->vcpu_info->arch.interrupt_delivery_enabled, - current->vcpu_info->arch.pending_interruption); + VCPU(current,interrupt_delivery_enabled), + VCPU(current,pending_interruption)); count = 0; } #endif @@ -159,7 +160,7 @@ xen_timer_interrupt (int irq, void *dev_id, struct pt_regs *regs) // We have to ensure that domain0 is launched before we // call vcpu_timer_expired on it //domain0_ready = 1; // moved to xensetup.c - current->vcpu_info->arch.pending_interruption = 1; + VCPU(current,pending_interruption) = 1; } if (domain0_ready && vcpu_timer_expired(dom0->vcpu[0])) { vcpu_pend_timer(dom0->vcpu[0]); diff --git a/xen/include/asm-ia64/event.h b/xen/include/asm-ia64/event.h index b643684762..9c7693094a 100644 --- a/xen/include/asm-ia64/event.h +++ b/xen/include/asm-ia64/event.h @@ -9,9 +9,11 @@ #ifndef __ASM_EVENT_H__ #define __ASM_EVENT_H__ +#include + static inline void evtchn_notify(struct vcpu *v) { - vcpu_pend_interrupt(v, v->vcpu_info->arch.evtchn_vector); + vcpu_pend_interrupt(v, VCPU(v,evtchn_vector)); } #endif diff --git a/xen/include/asm-ia64/vcpu.h b/xen/include/asm-ia64/vcpu.h index b5f97323b6..5dc2452bca 100644 --- a/xen/include/asm-ia64/vcpu.h +++ b/xen/include/asm-ia64/vcpu.h @@ -13,13 +13,9 @@ typedef int BOOLEAN; struct vcpu; typedef struct vcpu VCPU; -// NOTE: The actual VCPU structure (struct virtualcpu) is defined in -// thread.h. Moving it to here caused a lot of files to change, so -// for now, we'll leave well enough alone. typedef struct pt_regs REGS; -//#define PSCB(vcpu) (((struct spk_thread_t *)vcpu)->pscb) -//#define vcpu_regs(vcpu) &((struct spk_thread_t *)vcpu)->thread_regs -//#define vcpu_thread(vcpu) ((struct spk_thread_t *)vcpu) + +#define VCPU(_v,_x) _v->vcpu_info->arch._x #define PRIVOP_ADDR_COUNT #ifdef PRIVOP_ADDR_COUNT -- 2.30.2